home *** CD-ROM | disk | FTP | other *** search
- /*
- * MacDay.c
- *
- * Macintosh Interface for the Daytime Client.
- *
- * Mike Trent 9/94
- *
- * *MDT 11/27/95 Add Universal Headers #ifdefs
- */
-
- #include <stdio.h>
- #include <MacTCPCommonTypes.h>
- #include "ip.h"
- #include "iperr.h"
- // #define MAIN
- // #include "globals.h"
-
-
- /* defines */
- #define kBaseResID 128
- #define kMoveToFront (WindowPtr) - 1L
- #define kUseDefaultProc (void *)-1L
- #define kSleep 3600L
- #define kLeaveWhereItIs false
-
- #define mApple 128
- #define iAbout 1
-
- #define mFile 129
- #define iQuit 1
-
- #define mEdit 130 /* dummy menu */
-
- #define mConnection 131
- #define iGetTime 1
- #define iLocalNum 2
-
- #define kIgnored 0
-
-
- void InitToolBox(void);
- void MenuBarInit(void);
- void DoEvent (EventRecord *eventPtr);
- void HandleMouseDown (EventRecord *eventPtr);
- void HandleMenuChoice (long menuChoice);
- void HandleConnection(short item);
- void DoAbout(void);
- void DoGetTime(char *host, char *port, char *data);
- void DrawDefault(DialogPtr dialog);
-
- Boolean gDone = false;
-
- main()
- {
- EventRecord event;
-
- MaxApplZone();
- MoreMasters(); MoreMasters(); MoreMasters(); MoreMasters();
-
- InitToolBox();
-
- if (InitMacTCP() != noErr) {
- SysBeep(3);
- ExitToShell();
- }
-
- MenuBarInit();
-
- gDone = false;
-
- while (gDone == false)
- {
- if (WaitNextEvent(everyEvent, &event, kSleep, nil))
- DoEvent (&event);
- else
- ;//HandleNull();
- }
- DisposeMacTCP();
- }
-
- void InitToolBox(void)
- {
- InitGraf(&qd.thePort);
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs(nil);
- InitCursor();
- }
-
- void MenuBarInit (void)
- {
- Handle menuBar;
- MenuHandle menu;
-
- menuBar = GetNewMBar(128); /* read menus into menu bar */
- if ( menuBar == nil )
- {
- SysBeep (3);
- ExitToShell();
- }
- SetMenuBar(menuBar); /* install menus */
- DisposHandle(menuBar);
- AddResMenu(GetMHandle(128), 'DRVR'); /* add DA names to Apple menu */
- DrawMenuBar();
-
-
- //DrawMenuBar();
- }
-
- void DoEvent (EventRecord *eventPtr)
- {
- char theChar;
-
- switch (eventPtr->what)
- {
- case mouseDown:
- HandleMouseDown (eventPtr);
- break;
- case keyDown:
- case autoKey:
- theChar = eventPtr->message & charCodeMask;
- if ((eventPtr->modifiers & cmdKey) != 0)
- HandleMenuChoice (MenuKey (theChar));
- break;
- }
- }
-
- /********** HandleMouseDown **********/
-
- void HandleMouseDown (EventRecord *eventPtr)
- {
- WindowPtr whichWindow;
- short thePart;
- long menuChoice;
-
- thePart = FindWindow(eventPtr->where, &whichWindow);
-
- switch (thePart)
- {
- case inMenuBar:
- menuChoice = MenuSelect (eventPtr->where);
- HandleMenuChoice(menuChoice);
- break;
- case inSysWindow:
- SystemClick(eventPtr, whichWindow);
- break;
- }
- }
-
-
- /********** HandleMenuChoice **********/
-
- void HandleMenuChoice (long menuChoice)
- {
- short menu;
- short item;
- MenuHandle appleMenu;
- Str255 accName;
- short accNumber;
-
-
- if (menuChoice != 0)
- {
- menu = HiWord(menuChoice);
- item = LoWord(menuChoice);
-
- switch (menu){
- case mApple:
- switch (item){
- case iAbout:
- DoAbout();
- break;
- default:
- appleMenu = GetMHandle (mApple);
- GetItem (appleMenu, item, accName);
- accNumber = OpenDeskAcc(accName);
- break;
- }
- break;
- case mFile:
- if (item == iQuit) gDone = true;
- break;
- case mConnection:
- HandleConnection(item);
- break;
- }
- HiliteMenu (0);
- }
- }
-
- void HandleConnection(short item)
- {
- char data[80], addr[80], port[10];
- DialogPtr dialog;
- short itemHit = 0;
- short t;
- Handle h;
- Rect r;
-
- switch (item) {
- case iGetTime:
- if ((dialog = GetNewDialog(128, nil, kMoveToFront)) == nil){
- SysBeep(3);
- return;
- }
- SetPort(dialog);
- DrawDefault(dialog);
- while ((itemHit != 1) && (itemHit != 2))
- ModalDialog(nil, &itemHit);
- if (itemHit == 2) {
- DisposDialog(dialog);
- return;
- }
- itemHit = 0;
- GetDItem(dialog,3,&t,&h,&r);
- GetIText(h, (unsigned char*)addr);
- GetDItem(dialog,4,&t,&h,&r);
- GetIText(h, (unsigned char *)port);
- DisposDialog(dialog);
-
- addr[(addr[0]+1)] = 0;
- port[(port[0]+1)] = 0;
- DoGetTime(&(addr[1]), &(port[1]), data);
- //data[0] = strlen(&(data[1]));
-
- if ((dialog = GetNewDialog(129,nil, kMoveToFront)) == nil){
- SysBeep(3);
- return;
- }
- SetPort(dialog);
- GetDItem(dialog,2,&t,&h,&r);
- SetIText(h, (ConstStr255Param)data);
- DrawDefault(dialog);
- while (itemHit != 1)
- ModalDialog(nil, &itemHit);
- DisposDialog(dialog);
- break;
- case iLocalNum:
- if ((GetHostName(&(addr[1]), 0)) < 0) {
- SysBeep(3);
- return;
- }
- addr[0] = strlen(&(addr[1])); // Make it a pascal string
- if ((dialog = GetNewDialog(130,nil, kMoveToFront)) == nil){
- SysBeep(3);
- return;
- }
- SetPort(dialog);
- GetDItem(dialog,2,&t,&h,&r);
- SetIText(h, (ConstStr255Param)addr);
- DrawDefault(dialog);
- while (itemHit != 1)
- ModalDialog(nil, &itemHit);
- DisposDialog(dialog);
- break;
- }
- }
-
- void DoGetTime(char *host, char *port, char *data)
- {
- int s, err, n= 1, tot = 0;
- struct sockaddr_in sa;
-
- s = socket(kIgnored,kIgnored,IPPROTO_TCP);
- if (s < 0) {
- sprintf(data, (const char *)"\psocket() e%d, m%d", gErrno, gMacErrno);
- goto foo;
- }
-
- sa.sin_port = atoi(port);
- sa.sin_addr = GetHostByName(host);
- //sa.sin_addr = 0x90592866; alan's power mac
- if (sa.sin_addr == 0) {
- sprintf(data, (const char *)"\pGetHostByName() e%d, m%d", gErrno, gMacErrno);
- goto foo;
- }
-
- if ((err = connect(s,&sa,kIgnored)) != noErr) {
- sprintf(data, (const char *)"\pconnect error");
- goto foo;
- }
-
- while ((n=read(s, &(data[tot+1]), 100)) > 0) {
- data[n + tot + 1] = '\0';
- tot += n; //keep a running total of length of bytes received.
- }
-
- data[0] = strlen(&(data[1]));
- while ((data[data[0]] == '\n') || (data[data[0]] == '\r')) data[0]--; /* shave off the new line character */
-
- foo:
- if (close(s)) {
- SysBeep(3); /* beep discretely to report a close error */
- //sprintf(str, (const char *)"\pclose error() e%d, m%d", gErrno, gMacErrno);
- return;
- }
- }
-
-
- void DoAbout(void)
- {
- short itemHit = 0;
- DialogPtr dialog;
-
- dialog = GetNewDialog(131, nil, kMoveToFront);
- if (dialog == 0L){
- SysBeep(3);
- ExitToShell();
- }
- SetPort(dialog);
- DrawDefault(dialog);
- while (itemHit != 1)
- ModalDialog(nil, &itemHit);
- DisposDialog(dialog);
- }
-
- /********** DrawDefault **********/
-
- void DrawDefault(DialogPtr dialog)
- {
- short type;
- Handle dummy;
- Rect button;
-
- SetPort(dialog);
- GetDItem(dialog,1,&type,&dummy,&button);
- PenSize(3,3);
- InsetRect(&button, -4,-4);
- FrameRoundRect(&button,16,16);
- }
-